import java.io.*;
import java.util.Scanner;

public class demo01 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        //1.让用户指定一个需要搜索的根目录
        System.out.println("请输入需要搜索的根目录：");
        File rootDir=new File(sc.next());
        if(!rootDir.isDirectory()){
            System.out.println("输入有误，不存在该根目录");
            return;
        }
        //2.让用户输入一个要查询的词
        String word=sc.next();
        //3.递归的进行目录/文件的遍历
        scanDir(rootDir,word);
    }
    private static void scanDir(File rootDir,String word) {
        //列出当前的rootDir中的内容，没有就直接结束
        File[] files=rootDir.listFiles();
        if(files==null){
            //目录中没有
            return;
        }
        //目录中有，遍历元素
        for (File f:files) {
            System.out.println("当前搜索到："+f.getAbsolutePath());
            if(f.isFile()){
                //是普通文件就打开读取内容，查看是否包含上述关键词
                String str=readFile(f);
                if(str.contains(word)){
                    System.out.println(f.getAbsolutePath()+"包含要查找的关键词");
                }
            }else if (f.isDirectory()){
                //是目录，进行递归操作
                scanDir(f,word);
            }else{
                //不是普通文件，也不是根目录，跳过
                continue;
            }
        }
    }
    private static String readFile(File f)  {
        StringBuilder sb=new StringBuilder();
        try(Reader reader = new FileReader(f)) {
            while (true){
                int ch=reader.read();
                if(ch==-1){
                    break;
                }
                sb.append((char) ch);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return sb.toString();
    }
}
